// 版权2019 etcd作者
// 
// 根据Apache许可证2.0版（以下简称“许可证”）获得许可；
// 除非遵守许可证，否则不得使用此文件。
// 您可以通过
// 
// www.apache.org/licenses/LICENSE-2.0 
// 
// 除非适用法律要求或书面同意，否则根据许可证分发的软件
// 按“原样”分发，
// 无任何明示或暗示的保证或条件。
// 请参阅许可证，了解管理许可的特定语言和
// 许可证下的限制。

package rafttest

import (
	"fmt"
	"testing"

	"github.com/cockroachdb/datadriven"
	"go.etcd.io/etcd/raft/v3/tracker"
)

func (env *InteractionEnv) handleStatus(t *testing.T, d datadriven.TestData) error {
	idx := firstAsNodeIdx(t, d)
	return env.Status(idx)
}

// Status pretty将给定索引处节点的raft状态打印到输出
// 缓冲区。
func (env *InteractionEnv) Status(idx int) error {
	// TODO（待定）：实际打印完整状态。
	st := env.Nodes[idx].Status()
	m := tracker.ProgressMap{}
	for id, pr := range st.Progress {
		pr := pr // 循环本地副本
		m[id] = &pr
	}
	fmt.Fprint(env.Output, m)
	return nil
}
